此文章由人工翻译。 将光标移到文章的句子上,以查看原文。
译文
原文

Array 类

提供创建、操作、搜索和排序数组的方法,因而在公共语言运行时中用作所有数组的基类。

命名空间:  System
程序集:  mscorlib(在 mscorlib.dll 中)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class Array : ICloneable, 
	IList, ICollection, IEnumerable, IStructuralComparable, IStructuralEquatable

Array 类型公开以下成员。

  名称说明
公共属性由 XNA Framework 提供支持IsFixedSize获取一个值,该值指示 Array 是否具有固定大小。
公共属性由 XNA Framework 提供支持IsReadOnly获取一个值,该值指示 Array 是否为只读。
公共属性由 XNA Framework 提供支持IsSynchronized获取一个值,该值指示是否同步对 Array 的访问(线程安全)。
公共属性由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifLength获得一个 32 位整数,该整数表示 Array 的所有维数中元素的总数。
公共属性LongLength获得一个 64 位整数,该整数表示 Array 的所有维数中元素的总数。
公共属性由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifRank获取 Array 的秩(维数)。
公共属性由 XNA Framework 提供支持SyncRoot获取可用于同步 Array 访问的对象。
页首

  名称说明
公共方法静态成员AsReadOnly<T>返回指定数组的只读包装。
公共方法静态成员由 XNA Framework 提供支持BinarySearch(Array, Object)使用由 Array 中每个元素和指定的对象实现的 IComparable 接口,在整个一维排序 Array 中搜索特定元素。
公共方法静态成员BinarySearch(Array, Object, IComparer)使用指定的 IComparer 接口,在整个一维排序 Array 中搜索值。
公共方法静态成员BinarySearch(Array, Int32, Int32, Object)使用由 Array 中每个元素和指定值实现的 IComparable 接口,在一维排序 Array 的某个范围中搜索值。
公共方法静态成员由 XNA Framework 提供支持BinarySearch(Array, Int32, Int32, Object, IComparer)使用指定的 IComparer 接口,在一维排序 Array 的某个元素范围中搜索值。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifBinarySearch<T>(T[], T)使用由 Array 中每个元素和指定的对象实现的 IComparable<T> 泛型接口,在整个一维排序 Array 中搜索特定元素。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifBinarySearch<T>(T[], T, IComparer<T>)使用指定的 IComparer<T> 泛型接口,在整个一维排序 Array 中搜索值。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifBinarySearch<T>(T[], Int32, Int32, T)使用由 Array 中每个元素和指定值实现的 IComparable<T> 泛型接口,在一维排序 Array 的某个元素范围中搜索值。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifBinarySearch<T>(T[], Int32, Int32, T, IComparer<T>)使用指定的 IComparer<T> 泛型接口,在一维排序 Array 的某个元素范围中搜索值。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifClearArray 中的一系列元素设置为零、falsenull,具体取决于元素类型。
公共方法由 XNA Framework 提供支持Clone创建 Array 的浅表副本。
公共方法静态成员ConstrainedCopy从指定的源索引开始,复制 Array 中的一系列元素,将它们粘贴到另一 Array 中(从指定的目标索引开始)。 保证在复制未成功完成的情况下撤消所有更改。
公共方法静态成员ConvertAll<TInput, TOutput>将一种类型的数组转换为另一种类型的数组。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifCopy(Array, Array, Int32)从第一个元素开始复制 Array 中的一系列元素,将它们粘贴到另一 Array 中(从第一个元素开始)。 长度指定为 32 位整数。
公共方法静态成员Copy(Array, Array, Int64)从第一个元素开始复制 Array 中的一系列元素,将它们粘贴到另一 Array 中(从第一个元素开始)。 长度指定为 64 位整数。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifCopy(Array, Int32, Array, Int32, Int32)从指定的源索引开始,复制 Array 中的一系列元素,将它们粘贴到另一 Array 中(从指定的目标索引开始)。 长度和索引指定为 32 位整数。
公共方法静态成员Copy(Array, Int64, Array, Int64, Int64)从指定的源索引开始,复制 Array 中的一系列元素,将它们粘贴到另一 Array 中(从指定的目标索引开始)。 长度和索引指定为 64 位整数。
公共方法由 XNA Framework 提供支持CopyTo(Array, Int32)将当前一维 Array 的所有元素复制到指定的一维 Array 中(从指定的目标 Array 索引开始)。 索引指定为 32 位整数。
公共方法CopyTo(Array, Int64)将当前一维 Array 的所有元素复制到指定的一维 Array 中(从指定的目标 Array 索引开始)。 索引指定为 64 位整数。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifCreateInstance(Type, Int32)创建使用从零开始的索引、具有指定 Type 和长度的一维 Array
公共方法静态成员由 XNA Framework 提供支持CreateInstance(Type, Int32[])创建使用从零开始的索引、具有指定 Type 和维长的多维 Array 维的长度在一个 32 位整数数组中指定。
公共方法静态成员CreateInstance(Type, Int64[])创建使用从零开始的索引、具有指定 Type 和维长的多维 Array 维的长度在一个 64 位整数数组中指定。
公共方法静态成员CreateInstance(Type, Int32, Int32)创建使用从零开始的索引、具有指定 Type 和维长的二维 Array
公共方法静态成员CreateInstance(Type, Int32[], Int32[])创建具有指定下限、指定 Type 和维长的多维 Array
公共方法静态成员CreateInstance(Type, Int32, Int32, Int32)创建使用从零开始的索引、具有指定 Type 和维长的三维 Array
公共方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifEquals(Object)确定指定的 Object 是否等于当前的 Object (继承自 Object。)
公共方法静态成员Exists<T>确定指定数组包含的元素是否与指定谓词定义的条件匹配。
受保护的方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifFinalize允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法静态成员Find<T>搜索与指定谓词所定义的条件相匹配的元素,并返回整个 Array 中的第一个匹配元素。
公共方法静态成员FindAll<T>检索与指定谓词定义的条件匹配的所有元素。
公共方法静态成员FindIndex<T>(T[], Predicate<T>)搜索与指定谓词定义的条件匹配的元素,然后返回整个 Array 中第一个匹配项的从零开始的索引。
公共方法静态成员FindIndex<T>(T[], Int32, Predicate<T>)搜索与指定谓词所定义的条件相匹配的元素,并返回 Array 中从指定索引到最后一个元素的元素范围内第一个匹配项的从零开始的索引。
公共方法静态成员FindIndex<T>(T[], Int32, Int32, Predicate<T>)搜索与指定谓词所定义的条件相匹配的一个元素,并返回 Array 中从指定的索引开始、包含指定元素个数的元素范围内第一个匹配项的从零开始的索引。
公共方法静态成员FindLast<T>搜索与指定谓词所定义的条件相匹配的元素,并返回整个 Array 中的最后一个匹配元素。
公共方法静态成员FindLastIndex<T>(T[], Predicate<T>)搜索与指定谓词定义的条件匹配的元素,然后返回整个 Array 中最后一个匹配项的从零开始的索引。
公共方法静态成员FindLastIndex<T>(T[], Int32, Predicate<T>)搜索与由指定谓词定义的条件相匹配的元素,并返回 Array 中从第一个元素到指定索引的元素范围内最后一个匹配项的从零开始的索引。
公共方法静态成员FindLastIndex<T>(T[], Int32, Int32, Predicate<T>)搜索与指定谓词所定义的条件相匹配的元素,并返回 Array 中包含指定元素个数、到指定索引结束的元素范围内最后一个匹配项的从零开始的索引。
公共方法静态成员ForEach<T>对指定数组的每个元素执行指定操作。
公共方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifGetEnumerator返回 ArrayIEnumerator
公共方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifGetHashCode用作特定类型的哈希函数。 (继承自 Object。)
公共方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifGetLength获取一个 32 位整数,该整数表示 Array 的指定维中的元素数。
公共方法GetLongLength获取一个 64 位整数,该整数表示 Array 的指定维中的元素数。
公共方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifGetLowerBound获取 Array 中指定维度的下限。
公共方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifGetType获取当前实例的 Type (继承自 Object。)
公共方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifGetUpperBound获取 Array 的指定维度的上限。
公共方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifGetValue(Int32)获取一维 Array 中指定位置的值。 索引指定为 32 位整数。
公共方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifGetValue(Int32[])获取多维 Array 中指定位置的值。 索引指定为一个 32 位整数数组。
公共方法GetValue(Int64)获取一维 Array 中指定位置的值。 索引指定为 64 位整数。
公共方法GetValue(Int64[])获取多维 Array 中指定位置的值。 索引指定为一个 64 位整数数组。
公共方法GetValue(Int32, Int32)获取二维 Array 中指定位置的值。 索引指定为 32 位整数。
公共方法GetValue(Int64, Int64)获取二维 Array 中指定位置的值。 索引指定为 64 位整数。
公共方法GetValue(Int32, Int32, Int32)获取三维 Array 中指定位置的值。 索引指定为 32 位整数。
公共方法GetValue(Int64, Int64, Int64)获取三维 Array 中指定位置的值。 索引指定为 64 位整数。
公共方法静态成员IndexOf(Array, Object)搜索指定的对象,并返回整个一维 Array 中第一个匹配项的索引。
公共方法静态成员IndexOf(Array, Object, Int32)搜索指定的对象,并返回一维 Array 中从指定索引到最后一个元素这部分元素中第一个匹配项的索引。
公共方法静态成员由 XNA Framework 提供支持IndexOf(Array, Object, Int32, Int32)搜索指定的对象,并返回一维 Array 中从指定索引开始包含指定个元素的这部分元素中第一个匹配项的索引。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifIndexOf<T>(T[], T)搜索指定的对象,并返回整个 Array 中第一个匹配项的索引。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifIndexOf<T>(T[], T, Int32)搜索指定的对象,并返回 Array 中从指定索引到最后一个元素这部分元素中第一个匹配项的索引。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifIndexOf<T>(T[], T, Int32, Int32)搜索指定的对象,并返回 Array 中从指定索引开始包含指定个元素的这部分元素中第一个匹配项的索引。
公共方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifInitialize通过调用值类型的默认构造函数,初始化值类型 Array 的每一个元素。
公共方法静态成员LastIndexOf(Array, Object)搜索指定的对象,并返回整个一维 Array 中最后一个匹配项的索引。
公共方法静态成员LastIndexOf(Array, Object, Int32)搜索指定的对象,并返回一维 Array 中从第一个元素到指定索引这部分元素中最后一个匹配项的索引。
公共方法静态成员由 XNA Framework 提供支持LastIndexOf(Array, Object, Int32, Int32)搜索指定的对象,并返回一维 Array 中到指定索引为止包含指定个元素的这部分元素中最后一个匹配项的索引。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifLastIndexOf<T>(T[], T)搜索指定的对象,并返回整个 Array 中最后一个匹配项的索引。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifLastIndexOf<T>(T[], T, Int32)搜索指定的对象,并返回 Array 中从第一个元素到指定索引这部分元素中最后一个匹配项的索引。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifLastIndexOf<T>(T[], T, Int32, Int32)搜索指定的对象,并返回 Array 中到指定索引为止包含指定个元素的这部分元素中最后一个匹配项的索引。
受保护的方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifMemberwiseClone创建当前 Object 的浅表副本。 (继承自 Object。)
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifResize<T>将数组的元素数更改为指定的新大小。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifReverse(Array)反转整个一维 Array 中元素的顺序。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifReverse(Array, Int32, Int32)反转一维 Array 中某部分元素的元素顺序。
公共方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifSetValue(Object, Int32)将某值设置给一维 Array 中指定位置的元素。 索引指定为 32 位整数。
公共方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifSetValue(Object, Int32[])将某值设置给多维 Array 中指定位置的元素。 索引指定为一个 32 位整数数组。
公共方法SetValue(Object, Int64)将某值设置给一维 Array 中指定位置的元素。 索引指定为 64 位整数。
公共方法SetValue(Object, Int64[])将某值设置给多维 Array 中指定位置的元素。 索引指定为一个 64 位整数数组。
公共方法SetValue(Object, Int32, Int32)将某值设置给二维 Array 中指定位置的元素。 索引指定为 32 位整数。
公共方法SetValue(Object, Int64, Int64)将某值设置给二维 Array 中指定位置的元素。 索引指定为 64 位整数。
公共方法SetValue(Object, Int32, Int32, Int32)将某值设置给三维 Array 中指定位置的元素。 索引指定为 32 位整数。
公共方法SetValue(Object, Int64, Int64, Int64)将某值设置给三维 Array 中指定位置的元素。 索引指定为 64 位整数。
公共方法静态成员由 XNA Framework 提供支持Sort(Array)使用 Array 中每个元素的 IComparable 实现,对整个一维 Array 中的元素进行排序。
公共方法静态成员Sort(Array, Array)基于第一个 Array 中的关键字,使用每个关键字的 IComparable 实现,对两个一维 Array 对象(一个包含关键字,另一个包含对应的项)进行排序。
公共方法静态成员由 XNA Framework 提供支持Sort(Array, IComparer)使用指定的 IComparer,对一维 Array 中的元素进行排序。
公共方法静态成员由 XNA Framework 提供支持Sort(Array, Array, IComparer)基于第一个 Array 中的关键字,使用指定的 IComparer,对两个一维 Array 对象(一个包含关键字,另一个包含对应的项)进行排序。
公共方法静态成员Sort(Array, Int32, Int32)使用 Array 中每个元素的 IComparable 实现,对一维 Array 中某部分元素进行排序。
公共方法静态成员Sort(Array, Array, Int32, Int32)基于第一个 Array 中的关键字,使用每个关键字的 IComparable 实现,对两个一维 Array 对象(一个包含关键字,另一个包含对应的项)的部分元素进行排序。
公共方法静态成员由 XNA Framework 提供支持Sort(Array, Int32, Int32, IComparer)使用指定的 IComparer,对一维 Array 的部分元素进行排序。
公共方法静态成员由 XNA Framework 提供支持Sort(Array, Array, Int32, Int32, IComparer)基于第一个 Array 中的关键字,使用指定的 IComparer,对两个一维 Array 对象(一个包含关键字,另一个包含对应的项)的部分元素进行排序。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifSort<T>(T[])使用 Array 的每个元素的 IComparable<T> 泛型接口实现,对整个 Array 中的元素进行排序。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifSort<T>(T[], IComparer<T>)使用指定的 IComparer<T> 泛型接口,对 Array 中的元素进行排序。
公共方法静态成员由 XNA Framework 提供支持Sort<T>(T[], Comparison<T>)使用指定的 Comparison<T>Array 中的元素进行排序。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifSort<T>(T[], Int32, Int32)使用 Array 的每个元素的 IComparable<T> 泛型接口实现,对 Array 中某个元素范围内的元素进行排序。
公共方法静态成员由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifSort<T>(T[], Int32, Int32, IComparer<T>)使用指定的 IComparer<T> 泛型接口,对 Array 中某个元素范围内的元素进行排序。
公共方法静态成员由 XNA Framework 提供支持Sort<TKey, TValue>(TKey[], TValue[])基于第一个 Array 中的关键字,使用每个关键字的 IComparable<T> 泛型接口实现,对两个 Array 对象(一个包含关键字,另一个包含对应的项)进行排序。
公共方法静态成员由 XNA Framework 提供支持Sort<TKey, TValue>(TKey[], TValue[], IComparer<TKey>)基于第一个 Array 中的关键字,使用指定的 IComparer<T> 泛型接口,对两个 Array 对象(一个包含关键字,另一个包含对应的项)进行排序。
公共方法静态成员由 XNA Framework 提供支持Sort<TKey, TValue>(TKey[], TValue[], Int32, Int32)基于第一个 Array 中的关键字,使用每个关键字的 IComparable<T> 泛型接口实现,对两个 Array 对象(一个包含关键字,另一个包含对应的项)的部分元素进行排序。
公共方法静态成员由 XNA Framework 提供支持Sort<TKey, TValue>(TKey[], TValue[], Int32, Int32, IComparer<TKey>)基于第一个 Array 中的关键字,使用指定的 IComparer<T> 泛型接口,对两个 Array 对象(一个包含关键字,另一个包含对应的项)的部分元素进行排序。
公共方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifToString返回表示当前对象的字符串。 (继承自 Object。)
公共方法静态成员由 XNA Framework 提供支持TrueForAll<T>确定数组中的每个元素是否都与指定谓词定义的条件匹配。
页首

  名称说明
公共扩展方法AsParallel启用查询的并行化。 (由 ParallelEnumerable 定义。)
公共扩展方法czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifAsQueryableIEnumerable 转换为 IQueryable (由 Queryable 定义。)
公共扩展方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifCast<TResult>IEnumerable 的元素转换为指定的类型。 (由 Enumerable 定义。)
公共扩展方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifOfType<TResult>根据指定类型筛选 IEnumerable 的元素。 (由 Enumerable 定义。)
页首

  名称说明
显式接口实现私有方法czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifICollection.CopyTo
显式接口实现私有属性由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifICollection.Count获取 Array 中包含的元素数。
显式接口实现私有属性czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifICollection.IsSynchronized
显式接口实现私有属性czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifICollection.SyncRoot
显式接口实现私有方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifIList.AddIList 中添加项。
显式接口实现私有方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifIList.ClearIList 中移除所有项。
显式接口实现私有方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifIList.Contains确定某元素是否在 IList 中。
显式接口实现私有方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifIList.IndexOf确定 IList 中特定项的索引。
显式接口实现私有方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifIList.Insert将一个项插入指定索引处的 IList
显式接口实现私有属性czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifIList.IsFixedSize
显式接口实现私有属性czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifIList.IsReadOnly
显式接口实现私有属性由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifIList.Item获取或设置指定索引处的元素。
显式接口实现私有方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifIList.RemoveIList 中移除特定对象的第一个匹配项。
显式接口实现私有方法由 XNA Framework 提供支持czz5hkty.PortableClassLibrary(zh-cn,VS.100).gifIList.RemoveAt移除指定索引处的 IList 项。
显式接口实现私有方法IStructuralComparable.CompareTo确定当前集合对象在排序顺序中的位置是位于另一个对象之前、之后还是与其位置相同。
显式接口实现私有方法IStructuralEquatable.Equals确定某个对象与当前实例是否相等。
显式接口实现私有方法IStructuralEquatable.GetHashCode返回当前实例的哈希代码。
页首

Array 类是支持数组的语言实现的基类。 但是,只有系统和编译器可以从 Array 类显式派生。 用户应当使用由语言提供的数组构造。

一个元素就是 Array 中的一个值。 Array 的长度是它可包含的元素总数。 Array 的秩是 Array 中的维数。 Array 中维度的下限是 Array 中该维度的起始索引,多维 Array 的各个维度可以有不同的界限。 数组最多可以有 32 个维。

重要说明重要事项

在 .NET Framework 2.0 版中,Array 类实现 System.Collections.Generic.IList<T>System.Collections.Generic.ICollection<T>System.Collections.Generic.IEnumerable<T> 泛型接口。 由于实现是在运行时提供给数组的,因而对于文档生成工具不可见。 因此,泛型接口不会出现在 Array 类的声明语法中,也不会有关于只能通过将数组强制转换为泛型接口类型(显式接口实现)才可访问的接口成员的参考主题。 将某一数组强制转换为这三种接口之一时需要注意的关键一点是,添加、插入或移除元素的成员会引发 NotSupportedException

Type 对象提供有关数组类型声明的信息。 具有相同数组类型的 Array 对象共享同一 Type 对象。

Type.IsArray Type.GetElementType 可能不返回所预期的 Array 形式的结果,因为如果某个数组被强制转换为 Array 类型,则结果是对象,而非数组。 即,typeof(System.Array).IsArray 返回 false,而 typeof(System.Array).GetElementType 返回 null

与大多数类不同,Array 提供 CreateInstance 方法,以便允许后期绑定访问,而不是提供公共构造函数。

Array.Copy 方法不仅可在同一类型的数组之间复制元素,而且可在不同类型的标准数组之间复制元素;它会自动处理强制转换。

有些方法(如 CreateInstanceCopyCopyToGetValueSetValue)提供接受 64 位整数作为参数的重载,以适应大容量数组。 LongLength GetLongLength 返回 64 位整数,表示数组的长度。

不保证会对 Array 进行排序。 在执行需要对 Array 进行排序的操作(如 BinarySearch)之前,必须对 Array 进行排序。

不支持在本机代码中使用指针的 Array 对象,这种用法将对几种方法引发 NotSupportedException

下面的代码示例说明 Array.Copy 如何在 integer 类型的数组和 Object 类型的数组之间复制元素。


public class SamplesArray  {

   public static void Main()  {

      // Creates and initializes a new integer array and a new Object array.
      int[] myIntArray = new int[5] { 1, 2, 3, 4, 5 };
      Object[] myObjArray = new Object[5] { 26, 27, 28, 29, 30 };

      // Prints the initial values of both arrays.
      Console.WriteLine( "Initially," );
      Console.Write( "integer array:" );
      PrintValues( myIntArray );
      Console.Write( "Object array: " );
      PrintValues( myObjArray );

      // Copies the first two elements from the integer array to the Object array.
      System.Array.Copy( myIntArray, myObjArray, 2 );

      // Prints the values of the modified arrays.
      Console.WriteLine( "\nAfter copying the first two elements of the integer array to the Object array," );
      Console.Write( "integer array:" );
      PrintValues( myIntArray );
      Console.Write( "Object array: " );
      PrintValues( myObjArray );

      // Copies the last two elements from the Object array to the integer array.
      System.Array.Copy( myObjArray, myObjArray.GetUpperBound(0) - 1, myIntArray, myIntArray.GetUpperBound(0) - 1, 2 );

      // Prints the values of the modified arrays.
      Console.WriteLine( "\nAfter copying the last two elements of the Object array to the integer array," );
      Console.Write( "integer array:" );
      PrintValues( myIntArray );
      Console.Write( "Object array: " );
      PrintValues( myObjArray );
   }


   public static void PrintValues( Object[] myArr )  {
      foreach ( Object i in myArr )  {
         Console.Write( "\t{0}", i );
      }
      Console.WriteLine();
   }

   public static void PrintValues( int[] myArr )  {
      foreach ( int i in myArr )  {
         Console.Write( "\t{0}", i );
      }
      Console.WriteLine();
   }
}
/* 
This code produces the following output.

Initially,
integer array:  1       2       3       4       5
Object array:   26      27      28      29      30

After copying the first two elements of the integer array to the Object array,
integer array:  1       2       3       4       5
Object array:   1       2       28      29      30

After copying the last two elements of the Object array to the integer array,
integer array:  1       2       3       29      30
Object array:   1       2       28      29      30
*/


下面的代码示例创建并初始化一个 Array,然后显示其属性和元素。


public class SamplesArray2{

   public static void Main()  {

      // Creates and initializes a new three-dimensional Array of type Int32.
      Array myArr = Array.CreateInstance( typeof(Int32), 2, 3, 4 );
      for ( int i = myArr.GetLowerBound(0); i <= myArr.GetUpperBound(0); i++ )
         for ( int j = myArr.GetLowerBound(1); j <= myArr.GetUpperBound(1); j++ )
            for ( int k = myArr.GetLowerBound(2); k <= myArr.GetUpperBound(2); k++ )  {
               myArr.SetValue( (i*100)+(j*10)+k, i, j, k );
            }

      // Displays the properties of the Array.
      Console.WriteLine( "The Array has {0} dimension(s) and a total of {1} elements.", myArr.Rank, myArr.Length );
      Console.WriteLine( "\tLength\tLower\tUpper" );
      for ( int i = 0; i < myArr.Rank; i++ )  {
         Console.Write( "{0}:\t{1}", i, myArr.GetLength(i) );
         Console.WriteLine( "\t{0}\t{1}", myArr.GetLowerBound(i), myArr.GetUpperBound(i) );
      }

      // Displays the contents of the Array.
      Console.WriteLine( "The Array contains the following values:" );
      PrintValues( myArr );
   }


   public static void PrintValues( Array myArr )  {
      System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
      int i = 0;
      int cols = myArr.GetLength( myArr.Rank - 1 );
      while ( myEnumerator.MoveNext() )  {
         if ( i < cols )  {
            i++;
         } else  {
            Console.WriteLine();
            i = 1;
         }
         Console.Write( "\t{0}", myEnumerator.Current );
      }
      Console.WriteLine();
   }
}
/* 
This code produces the following output.

The Array has 3 dimension(s) and a total of 24 elements.
    Length    Lower    Upper
0:    2    0    1
1:    3    0    2
2:    4    0    3
The Array contains the following values:
    0    1    2    3
    10    11    12    13
    20    21    22    23
    100    101    102    103
    110    111    112    113
    120    121    122    123
*/


.NET Framework

受以下版本支持:4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

受以下版本支持:

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2

.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

此类型的公共静态(在 Visual Basic 中为 Shared)成员是线程安全的。 但不能保证任何实例成员是线程安全的。

此实现不提供 Array 的同步(线程安全)包装;但是,基于 Array 的 .NET Framework 类使用 SyncRoot 属性提供它们自己的集合同步版本。

从头到尾对一个集合进行枚举在本质上不是一个线程安全的过程。 即使一个集合已进行同步,其他线程仍可以修改该集合,这将导致枚举数引发异常。 若要在枚举过程中保证线程安全,可以在整个枚举过程中锁定集合,或者捕捉由于其他线程进行的更改而引发的异常。

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈

社区附加资源

添加
显示:
© 2015 Microsoft